[INFO] cloning repository https://github.com/sifear/rlox
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sifear/rlox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsifear%2Frlox", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsifear%2Frlox'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 00e9471168ab23e31f3a0f44416da3fc745b3fa6
[INFO] testing sifear/rlox against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsifear%2Frlox" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/sifear/rlox
[INFO] finished tweaking git repo https://github.com/sifear/rlox
[INFO] tweaked toml for git repo https://github.com/sifear/rlox written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sifear/rlox on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sifear/rlox already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 32d5b85b83f60c0ecc75bd7c9c61bf7b74a76e2df2898ec59d9b85e3eea93e1b
[INFO] running `Command { std: "docker" "start" "-a" "32d5b85b83f60c0ecc75bd7c9c61bf7b74a76e2df2898ec59d9b85e3eea93e1b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "32d5b85b83f60c0ecc75bd7c9c61bf7b74a76e2df2898ec59d9b85e3eea93e1b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "32d5b85b83f60c0ecc75bd7c9c61bf7b74a76e2df2898ec59d9b85e3eea93e1b", kill_on_drop: false }`
[INFO] [stdout] 32d5b85b83f60c0ecc75bd7c9c61bf7b74a76e2df2898ec59d9b85e3eea93e1b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 85934ea69f61967c1a1d93ec1b240df275d45bc962d7bb82f3a0cf0042b92ebe
[INFO] running `Command { std: "docker" "start" "-a" "85934ea69f61967c1a1d93ec1b240df275d45bc962d7bb82f3a0cf0042b92ebe", kill_on_drop: false }`
[INFO] [stderr]    Compiling rlox v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Any` and `TypeId`
[INFO] [stdout]  --> src/parser.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::any::{Any, TypeId};
[INFO] [stdout]   |                ^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `borrow::BorrowMut` and `collections::HashMap`
[INFO] [stdout]   --> src/parser/expression.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::{any::Any, borrow::BorrowMut, cell::RefCell, collections::HashMap, rc::Rc};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TypeId`
[INFO] [stdout]  --> src/parser/statement.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::any::{Any, TypeId};
[INFO] [stdout]   |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]  --> src/parser/statement.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::mem;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::BorrowMut`
[INFO] [stdout]   --> src/parser/statement.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::{borrow::BorrowMut, cell::RefCell, collections::HashMap};
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/expression.rs:188:24
[INFO] [stdout]     |
[INFO] [stdout] 188 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/parser/expression.rs:236:34
[INFO] [stdout]     |
[INFO] [stdout] 236 |             Literal::FnObject(a, b) => format!("fn object {}", a),
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/expression.rs:241:24
[INFO] [stdout]     |
[INFO] [stdout] 241 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/parser/statement.rs:275:21
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 Err(err) => {}
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/statement.rs:290:24
[INFO] [stdout]     |
[INFO] [stdout] 290 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/statement.rs:304:24
[INFO] [stdout]     |
[INFO] [stdout] 304 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:109:18
[INFO] [stdout]     |
[INFO] [stdout] 109 |             Some(token) => return self.var_declaration(),
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:114:18
[INFO] [stdout]     |
[INFO] [stdout] 114 |             Some(token) => return self.fun_declaration(),
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:119:18
[INFO] [stdout]     |
[INFO] [stdout] 119 |             Some(token) => return self.if_statement(),
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:124:18
[INFO] [stdout]     |
[INFO] [stdout] 124 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:135:18
[INFO] [stdout]     |
[INFO] [stdout] 135 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:146:18
[INFO] [stdout]     |
[INFO] [stdout] 146 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:157:18
[INFO] [stdout]     |
[INFO] [stdout] 157 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:168:18
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:182:18
[INFO] [stdout]     |
[INFO] [stdout] 182 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `semi`
[INFO] [stdout]    --> src/parser.rs:190:21
[INFO] [stdout]     |
[INFO] [stdout] 190 |                 let semi = self.consume(&TokenType::Semicolon);
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_semi`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:241:18
[INFO] [stdout]     |
[INFO] [stdout] 241 |             Some(token) => None,
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:243:22
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 Some(token) => {
[INFO] [stdout]     |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:496:18
[INFO] [stdout]     |
[INFO] [stdout] 496 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/parser.rs:626:18
[INFO] [stdout]     |
[INFO] [stdout] 626 |             Some(pos) => return Result::Ok(Rc::new(Empty {})),
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]    --> src/parser.rs:905:16
[INFO] [stdout]     |
[INFO] [stdout] 905 |             Ok(expr) => {
[INFO] [stdout]     |                ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:909:30
[INFO] [stdout]     |
[INFO] [stdout] 909 |                         Some(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]     --> src/parser.rs:1003:18
[INFO] [stdout]      |
[INFO] [stdout] 1003 |             Some(a) => {
[INFO] [stdout]      |                  ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]     --> src/parser.rs:1013:30
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                         Some(token) => {
[INFO] [stdout]      |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line_number`
[INFO] [stdout]     --> src/parser.rs:1160:11
[INFO] [stdout]      |
[INFO] [stdout] 1160 | fn report(line_number: u32, message: &str) {
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_line_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]     --> src/parser.rs:1160:29
[INFO] [stdout]      |
[INFO] [stdout] 1160 | fn report(line_number: u32, message: &str) {
[INFO] [stdout]      |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/environment.rs:70:18
[INFO] [stdout]    |
[INFO] [stdout] 70 |             Some(val) => {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/environment.rs:108:35
[INFO] [stdout]     |
[INFO] [stdout] 108 |                 Literal::FnObject(name, fn_obj) => return Some(fn_obj.clone()),
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]   --> src/scanner.rs:48:31
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn scan_tokens(&mut self, start: i32) -> Result<Vec<Token>, &'static str> {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/interpreter/runtime_error.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |             RuntimeErrorType::ExpressionExpected => {
[INFO] [stdout]     |             ------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 131 |             RuntimeErrorType::ExpressionExpected => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/interpreter/runtime_error.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |             RuntimeErrorType::Unknown => write!(f, "Unknown error at line {}", self.line),
[INFO] [stdout]     |             ------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 147 |             RuntimeErrorType::Unknown => write!(f, "Unknown error at line {}", self.line),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/interpreter.rs:25:20
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 Ok(value) => {}
[INFO] [stdout]    |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> src/parser/method.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Callable {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] 4 |     pub name: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BinaryMissingLHS`, `ExpectedIdentifierForFunc`, and `Generic` are never constructed
[INFO] [stdout]   --> src/parser/parser_error.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ParserErrorType {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  8 |     BinaryMissingLHS,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     ExpectedIdentifierForFunc,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     Generic
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParserErrorType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]   --> src/parser/statement.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait Statement: Any {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] 13 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError>;
[INFO] [stdout] 14 |     fn to_string(&self) -> String;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is` is never used
[INFO] [stdout]   --> src/parser/statement.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl dyn Statement {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 19 |     // Helper method to check the type
[INFO] [stdout] 20 |     fn is<T: Any>(&self) -> bool {
[INFO] [stdout]    |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `had_errors` is never read
[INFO] [stdout]   --> src/scanner.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Scanner<'a> {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     had_errors: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]    --> src/scanner/token.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Token {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ComparisonInvalidOperator`, `ArithmeticInvalidOperator`, `IdentifierExpedcted`, `InvalidAssignmentTarget`, and `UnexpextedBreakStatement` are never constructed
[INFO] [stdout]   --> src/interpreter/runtime_error.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum RuntimeErrorType {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  8 |     ComparisonInvalidOperator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  9 |     ArithmeticInvalidOperator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     IdentifierExpedcted,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     InvalidAssignmentTarget,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     UnexpextedBreakStatement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RuntimeErrorType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/parser.rs:87:24
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn new(tokens: &Vec<Token>) -> Parser {
[INFO] [stdout]    |                        ^^^^^^^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn new(tokens: &Vec<Token>) -> Parser<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:277:9
[INFO] [stdout]     |
[INFO] [stdout] 277 |         self.consume(&TokenType::Semicolon);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 277 |         let _ = self.consume(&TokenType::Semicolon);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:433:13
[INFO] [stdout]     |
[INFO] [stdout] 433 |             self.consume(&TokenType::Else);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 433 |             let _ = self.consume(&TokenType::Else);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:568:9
[INFO] [stdout]     |
[INFO] [stdout] 568 |         self.consume(&TokenType::RightParen);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 568 |         let _ = self.consume(&TokenType::RightParen);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:569:9
[INFO] [stdout]     |
[INFO] [stdout] 569 |         self.consume(&TokenType::LeftBrace);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 569 |         let _ = self.consume(&TokenType::LeftBrace);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/scanner.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(source: &String) -> Scanner {
[INFO] [stdout]    |                        ^^^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(source: &String) -> Scanner<'_> {
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.96s
[INFO] running `Command { std: "docker" "inspect" "85934ea69f61967c1a1d93ec1b240df275d45bc962d7bb82f3a0cf0042b92ebe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85934ea69f61967c1a1d93ec1b240df275d45bc962d7bb82f3a0cf0042b92ebe", kill_on_drop: false }`
[INFO] [stdout] 85934ea69f61967c1a1d93ec1b240df275d45bc962d7bb82f3a0cf0042b92ebe
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0dc972a3d8e7973371dfb28498931e906211df1e177f8cfcc09442052d219c5f
[INFO] running `Command { std: "docker" "start" "-a" "0dc972a3d8e7973371dfb28498931e906211df1e177f8cfcc09442052d219c5f", kill_on_drop: false }`
[INFO] [stderr]    Compiling rlox v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Any` and `TypeId`
[INFO] [stdout]  --> src/parser.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::any::{Any, TypeId};
[INFO] [stdout]   |                ^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `borrow::BorrowMut` and `collections::HashMap`
[INFO] [stdout]   --> src/parser/expression.rs:12:21
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::{any::Any, borrow::BorrowMut, cell::RefCell, collections::HashMap, rc::Rc};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TypeId`
[INFO] [stdout]  --> src/parser/statement.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::any::{Any, TypeId};
[INFO] [stdout]   |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]  --> src/parser/statement.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::mem;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::BorrowMut`
[INFO] [stdout]   --> src/parser/statement.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::{borrow::BorrowMut, cell::RefCell, collections::HashMap};
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/expression.rs:188:24
[INFO] [stdout]     |
[INFO] [stdout] 188 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]    --> src/parser/expression.rs:236:34
[INFO] [stdout]     |
[INFO] [stdout] 236 |             Literal::FnObject(a, b) => format!("fn object {}", a),
[INFO] [stdout]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/expression.rs:241:24
[INFO] [stdout]     |
[INFO] [stdout] 241 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/parser/statement.rs:275:21
[INFO] [stdout]     |
[INFO] [stdout] 275 |                 Err(err) => {}
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/statement.rs:290:24
[INFO] [stdout]     |
[INFO] [stdout] 290 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env`
[INFO] [stdout]    --> src/parser/statement.rs:304:24
[INFO] [stdout]     |
[INFO] [stdout] 304 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:109:18
[INFO] [stdout]     |
[INFO] [stdout] 109 |             Some(token) => return self.var_declaration(),
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:114:18
[INFO] [stdout]     |
[INFO] [stdout] 114 |             Some(token) => return self.fun_declaration(),
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:119:18
[INFO] [stdout]     |
[INFO] [stdout] 119 |             Some(token) => return self.if_statement(),
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:124:18
[INFO] [stdout]     |
[INFO] [stdout] 124 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:135:18
[INFO] [stdout]     |
[INFO] [stdout] 135 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:146:18
[INFO] [stdout]     |
[INFO] [stdout] 146 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:157:18
[INFO] [stdout]     |
[INFO] [stdout] 157 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:168:18
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:182:18
[INFO] [stdout]     |
[INFO] [stdout] 182 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `semi`
[INFO] [stdout]    --> src/parser.rs:190:21
[INFO] [stdout]     |
[INFO] [stdout] 190 |                 let semi = self.consume(&TokenType::Semicolon);
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_semi`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:241:18
[INFO] [stdout]     |
[INFO] [stdout] 241 |             Some(token) => None,
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:243:22
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 Some(token) => {
[INFO] [stdout]     |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:496:18
[INFO] [stdout]     |
[INFO] [stdout] 496 |             Some(token) => {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/parser.rs:626:18
[INFO] [stdout]     |
[INFO] [stdout] 626 |             Some(pos) => return Result::Ok(Rc::new(Empty {})),
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]    --> src/parser.rs:905:16
[INFO] [stdout]     |
[INFO] [stdout] 905 |             Ok(expr) => {
[INFO] [stdout]     |                ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]    --> src/parser.rs:909:30
[INFO] [stdout]     |
[INFO] [stdout] 909 |                         Some(token) => {
[INFO] [stdout]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]     --> src/parser.rs:1003:18
[INFO] [stdout]      |
[INFO] [stdout] 1003 |             Some(a) => {
[INFO] [stdout]      |                  ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]     --> src/parser.rs:1013:30
[INFO] [stdout]      |
[INFO] [stdout] 1013 |                         Some(token) => {
[INFO] [stdout]      |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line_number`
[INFO] [stdout]     --> src/parser.rs:1160:11
[INFO] [stdout]      |
[INFO] [stdout] 1160 | fn report(line_number: u32, message: &str) {
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_line_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]     --> src/parser.rs:1160:29
[INFO] [stdout]      |
[INFO] [stdout] 1160 | fn report(line_number: u32, message: &str) {
[INFO] [stdout]      |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/environment.rs:70:18
[INFO] [stdout]    |
[INFO] [stdout] 70 |             Some(val) => {
[INFO] [stdout]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/environment.rs:108:35
[INFO] [stdout]     |
[INFO] [stdout] 108 |                 Literal::FnObject(name, fn_obj) => return Some(fn_obj.clone()),
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]   --> src/scanner.rs:48:31
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn scan_tokens(&mut self, start: i32) -> Result<Vec<Token>, &'static str> {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/interpreter/runtime_error.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 124 |             RuntimeErrorType::ExpressionExpected => {
[INFO] [stdout]     |             ------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 131 |             RuntimeErrorType::ExpressionExpected => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/interpreter/runtime_error.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |             RuntimeErrorType::Unknown => write!(f, "Unknown error at line {}", self.line),
[INFO] [stdout]     |             ------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 147 |             RuntimeErrorType::Unknown => write!(f, "Unknown error at line {}", self.line),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/interpreter.rs:25:20
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 Ok(value) => {}
[INFO] [stdout]    |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> src/parser/method.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Callable {
[INFO] [stdout]   |            -------- field in this struct
[INFO] [stdout] 4 |     pub name: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BinaryMissingLHS`, `ExpectedIdentifierForFunc`, and `Generic` are never constructed
[INFO] [stdout]   --> src/parser/parser_error.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ParserErrorType {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  8 |     BinaryMissingLHS,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     ExpectedIdentifierForFunc,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     Generic
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParserErrorType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]   --> src/parser/statement.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait Statement: Any {
[INFO] [stdout]    |           --------- method in this trait
[INFO] [stdout] 13 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError>;
[INFO] [stdout] 14 |     fn to_string(&self) -> String;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is` is never used
[INFO] [stdout]   --> src/parser/statement.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl dyn Statement {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 19 |     // Helper method to check the type
[INFO] [stdout] 20 |     fn is<T: Any>(&self) -> bool {
[INFO] [stdout]    |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `had_errors` is never read
[INFO] [stdout]   --> src/scanner.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Scanner<'a> {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     had_errors: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_string` is never used
[INFO] [stdout]    --> src/scanner/token.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Token {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ComparisonInvalidOperator`, `ArithmeticInvalidOperator`, `IdentifierExpedcted`, `InvalidAssignmentTarget`, and `UnexpextedBreakStatement` are never constructed
[INFO] [stdout]   --> src/interpreter/runtime_error.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum RuntimeErrorType {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  8 |     ComparisonInvalidOperator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  9 |     ArithmeticInvalidOperator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     IdentifierExpedcted,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     InvalidAssignmentTarget,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     UnexpextedBreakStatement,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RuntimeErrorType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/parser.rs:87:24
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn new(tokens: &Vec<Token>) -> Parser {
[INFO] [stdout]    |                        ^^^^^^^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn new(tokens: &Vec<Token>) -> Parser<'_> {
[INFO] [stdout]    |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:277:9
[INFO] [stdout]     |
[INFO] [stdout] 277 |         self.consume(&TokenType::Semicolon);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 277 |         let _ = self.consume(&TokenType::Semicolon);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:433:13
[INFO] [stdout]     |
[INFO] [stdout] 433 |             self.consume(&TokenType::Else);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 433 |             let _ = self.consume(&TokenType::Else);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:568:9
[INFO] [stdout]     |
[INFO] [stdout] 568 |         self.consume(&TokenType::RightParen);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 568 |         let _ = self.consume(&TokenType::RightParen);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/parser.rs:569:9
[INFO] [stdout]     |
[INFO] [stdout] 569 |         self.consume(&TokenType::LeftBrace);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 569 |         let _ = self.consume(&TokenType::LeftBrace);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/scanner.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(source: &String) -> Scanner {
[INFO] [stdout]    |                        ^^^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(source: &String) -> Scanner<'_> {
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.62s
[INFO] running `Command { std: "docker" "inspect" "0dc972a3d8e7973371dfb28498931e906211df1e177f8cfcc09442052d219c5f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0dc972a3d8e7973371dfb28498931e906211df1e177f8cfcc09442052d219c5f", kill_on_drop: false }`
[INFO] [stdout] 0dc972a3d8e7973371dfb28498931e906211df1e177f8cfcc09442052d219c5f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 709ed0a62798d360f4a42e494294f41bba95305bba57c87d5d5d457b985af598
[INFO] running `Command { std: "docker" "start" "-a" "709ed0a62798d360f4a42e494294f41bba95305bba57c87d5d5d457b985af598", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `Any` and `TypeId`
[INFO] [stderr]  --> src/parser.rs:1:16
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::any::{Any, TypeId};
[INFO] [stderr]   |                ^^^  ^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `borrow::BorrowMut` and `collections::HashMap`
[INFO] [stderr]   --> src/parser/expression.rs:12:21
[INFO] [stderr]    |
[INFO] [stderr] 12 | use std::{any::Any, borrow::BorrowMut, cell::RefCell, collections::HashMap, rc::Rc};
[INFO] [stderr]    |                     ^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `TypeId`
[INFO] [stderr]  --> src/parser/statement.rs:7:21
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::any::{Any, TypeId};
[INFO] [stderr]   |                     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::mem`
[INFO] [stderr]  --> src/parser/statement.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::mem;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `borrow::BorrowMut`
[INFO] [stderr]   --> src/parser/statement.rs:10:11
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::{borrow::BorrowMut, cell::RefCell, collections::HashMap};
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `env`
[INFO] [stderr]    --> src/parser/expression.rs:188:24
[INFO] [stderr]     |
[INFO] [stderr] 188 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stderr]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `b`
[INFO] [stderr]    --> src/parser/expression.rs:236:34
[INFO] [stderr]     |
[INFO] [stderr] 236 |             Literal::FnObject(a, b) => format!("fn object {}", a),
[INFO] [stderr]     |                                  ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `env`
[INFO] [stderr]    --> src/parser/expression.rs:241:24
[INFO] [stderr]     |
[INFO] [stderr] 241 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stderr]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `err`
[INFO] [stderr]    --> src/parser/statement.rs:275:21
[INFO] [stderr]     |
[INFO] [stderr] 275 |                 Err(err) => {}
[INFO] [stderr]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `env`
[INFO] [stderr]    --> src/parser/statement.rs:290:24
[INFO] [stderr]     |
[INFO] [stderr] 290 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stderr]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `env`
[INFO] [stderr]    --> src/parser/statement.rs:304:24
[INFO] [stderr]     |
[INFO] [stderr] 304 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError> {
[INFO] [stderr]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_env`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:109:18
[INFO] [stderr]     |
[INFO] [stderr] 109 |             Some(token) => return self.var_declaration(),
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:114:18
[INFO] [stderr]     |
[INFO] [stderr] 114 |             Some(token) => return self.fun_declaration(),
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:119:18
[INFO] [stderr]     |
[INFO] [stderr] 119 |             Some(token) => return self.if_statement(),
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:124:18
[INFO] [stderr]     |
[INFO] [stderr] 124 |             Some(token) => {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:135:18
[INFO] [stderr]     |
[INFO] [stderr] 135 |             Some(token) => {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:146:18
[INFO] [stderr]     |
[INFO] [stderr] 146 |             Some(token) => {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:157:18
[INFO] [stderr]     |
[INFO] [stderr] 157 |             Some(token) => {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:168:18
[INFO] [stderr]     |
[INFO] [stderr] 168 |             Some(token) => {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:182:18
[INFO] [stderr]     |
[INFO] [stderr] 182 |             Some(token) => {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `semi`
[INFO] [stderr]    --> src/parser.rs:190:21
[INFO] [stderr]     |
[INFO] [stderr] 190 |                 let semi = self.consume(&TokenType::Semicolon);
[INFO] [stderr]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_semi`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:241:18
[INFO] [stderr]     |
[INFO] [stderr] 241 |             Some(token) => None,
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:243:22
[INFO] [stderr]     |
[INFO] [stderr] 243 |                 Some(token) => {
[INFO] [stderr]     |                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:496:18
[INFO] [stderr]     |
[INFO] [stderr] 496 |             Some(token) => {
[INFO] [stderr]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pos`
[INFO] [stderr]    --> src/parser.rs:626:18
[INFO] [stderr]     |
[INFO] [stderr] 626 |             Some(pos) => return Result::Ok(Rc::new(Empty {})),
[INFO] [stderr]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `expr`
[INFO] [stderr]    --> src/parser.rs:905:16
[INFO] [stderr]     |
[INFO] [stderr] 905 |             Ok(expr) => {
[INFO] [stderr]     |                ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]    --> src/parser.rs:909:30
[INFO] [stderr]     |
[INFO] [stderr] 909 |                         Some(token) => {
[INFO] [stderr]     |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `a`
[INFO] [stderr]     --> src/parser.rs:1003:18
[INFO] [stderr]      |
[INFO] [stderr] 1003 |             Some(a) => {
[INFO] [stderr]      |                  ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `token`
[INFO] [stderr]     --> src/parser.rs:1013:30
[INFO] [stderr]      |
[INFO] [stderr] 1013 |                         Some(token) => {
[INFO] [stderr]      |                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `line_number`
[INFO] [stderr]     --> src/parser.rs:1160:11
[INFO] [stderr]      |
[INFO] [stderr] 1160 | fn report(line_number: u32, message: &str) {
[INFO] [stderr]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_line_number`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `message`
[INFO] [stderr]     --> src/parser.rs:1160:29
[INFO] [stderr]      |
[INFO] [stderr] 1160 | fn report(line_number: u32, message: &str) {
[INFO] [stderr]      |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `val`
[INFO] [stderr]   --> src/environment.rs:70:18
[INFO] [stderr]    |
[INFO] [stderr] 70 |             Some(val) => {
[INFO] [stderr]    |                  ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `name`
[INFO] [stderr]    --> src/environment.rs:108:35
[INFO] [stderr]     |
[INFO] [stderr] 108 |                 Literal::FnObject(name, fn_obj) => return Some(fn_obj.clone()),
[INFO] [stderr]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `start`
[INFO] [stderr]   --> src/scanner.rs:48:31
[INFO] [stderr]    |
[INFO] [stderr] 48 |     fn scan_tokens(&mut self, start: i32) -> Result<Vec<Token>, &'static str> {
[INFO] [stderr]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/interpreter/runtime_error.rs:131:13
[INFO] [stderr]     |
[INFO] [stderr] 124 |             RuntimeErrorType::ExpressionExpected => {
[INFO] [stderr]     |             ------------------------------------ matches all the relevant values
[INFO] [stderr] ...
[INFO] [stderr] 131 |             RuntimeErrorType::ExpressionExpected => {
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/interpreter/runtime_error.rs:147:13
[INFO] [stderr]     |
[INFO] [stderr] 130 |             RuntimeErrorType::Unknown => write!(f, "Unknown error at line {}", self.line),
[INFO] [stderr]     |             ------------------------- matches all the relevant values
[INFO] [stderr] ...
[INFO] [stderr] 147 |             RuntimeErrorType::Unknown => write!(f, "Unknown error at line {}", self.line),
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `value`
[INFO] [stderr]   --> src/interpreter.rs:25:20
[INFO] [stderr]    |
[INFO] [stderr] 25 |                 Ok(value) => {}
[INFO] [stderr]    |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stderr] 
[INFO] [stderr] warning: field `name` is never read
[INFO] [stderr]  --> src/parser/method.rs:4:9
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub struct Callable {
[INFO] [stderr]   |            -------- field in this struct
[INFO] [stderr] 4 |     pub name: String,
[INFO] [stderr]   |         ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variants `BinaryMissingLHS`, `ExpectedIdentifierForFunc`, and `Generic` are never constructed
[INFO] [stderr]   --> src/parser/parser_error.rs:8:5
[INFO] [stderr]    |
[INFO] [stderr]  4 | pub enum ParserErrorType {
[INFO] [stderr]    |          --------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  8 |     BinaryMissingLHS,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 11 |     ExpectedIdentifierForFunc,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 12 |     Generic
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ParserErrorType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_string` is never used
[INFO] [stderr]   --> src/parser/statement.rs:14:8
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub trait Statement: Any {
[INFO] [stderr]    |           --------- method in this trait
[INFO] [stderr] 13 |     fn evaluate(&self, env: Rc<RefCell<Environment>>) -> Result<Literal, RuntimeError>;
[INFO] [stderr] 14 |     fn to_string(&self) -> String;
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is` is never used
[INFO] [stderr]   --> src/parser/statement.rs:20:8
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl dyn Statement {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] 19 |     // Helper method to check the type
[INFO] [stderr] 20 |     fn is<T: Any>(&self) -> bool {
[INFO] [stderr]    |        ^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `had_errors` is never read
[INFO] [stderr]   --> src/scanner.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr]  9 | pub struct Scanner<'a> {
[INFO] [stderr]    |            ------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 12 |     had_errors: bool,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_string` is never used
[INFO] [stderr]    --> src/scanner/token.rs:122:12
[INFO] [stderr]     |
[INFO] [stderr] 113 | impl Token {
[INFO] [stderr]     | ---------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 122 |     pub fn to_string(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `ComparisonInvalidOperator`, `ArithmeticInvalidOperator`, `IdentifierExpedcted`, `InvalidAssignmentTarget`, and `UnexpextedBreakStatement` are never constructed
[INFO] [stderr]   --> src/interpreter/runtime_error.rs:8:5
[INFO] [stderr]    |
[INFO] [stderr]  4 | pub enum RuntimeErrorType {
[INFO] [stderr]    |          ---------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  8 |     ComparisonInvalidOperator,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]  9 |     ArithmeticInvalidOperator,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 15 |     IdentifierExpedcted,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 18 |     InvalidAssignmentTarget,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 24 |     UnexpextedBreakStatement,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RuntimeErrorType` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/parser.rs:87:24
[INFO] [stderr]    |
[INFO] [stderr] 87 |     pub fn new(tokens: &Vec<Token>) -> Parser {
[INFO] [stderr]    |                        ^^^^^^^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 87 |     pub fn new(tokens: &Vec<Token>) -> Parser<'_> {
[INFO] [stderr]    |                                              ++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser.rs:277:9
[INFO] [stderr]     |
[INFO] [stderr] 277 |         self.consume(&TokenType::Semicolon);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 277 |         let _ = self.consume(&TokenType::Semicolon);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser.rs:433:13
[INFO] [stderr]     |
[INFO] [stderr] 433 |             self.consume(&TokenType::Else);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 433 |             let _ = self.consume(&TokenType::Else);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser.rs:568:9
[INFO] [stderr]     |
[INFO] [stderr] 568 |         self.consume(&TokenType::RightParen);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 568 |         let _ = self.consume(&TokenType::RightParen);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/parser.rs:569:9
[INFO] [stderr]     |
[INFO] [stderr] 569 |         self.consume(&TokenType::LeftBrace);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 569 |         let _ = self.consume(&TokenType::LeftBrace);
[INFO] [stderr]     |         +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/scanner.rs:18:24
[INFO] [stderr]    |
[INFO] [stderr] 18 |     pub fn new(source: &String) -> Scanner {
[INFO] [stderr]    |                        ^^^^^^^     ^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 18 |     pub fn new(source: &String) -> Scanner<'_> {
[INFO] [stderr]    |                                           ++++
[INFO] [stderr] 
[INFO] [stderr] warning: `rlox` (bin "rlox" test) generated 50 warnings (run `cargo fix --bin "rlox" -p rlox --tests` to apply 37 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rlox-db83f109e652e88a)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "709ed0a62798d360f4a42e494294f41bba95305bba57c87d5d5d457b985af598", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "709ed0a62798d360f4a42e494294f41bba95305bba57c87d5d5d457b985af598", kill_on_drop: false }`
[INFO] [stdout] 709ed0a62798d360f4a42e494294f41bba95305bba57c87d5d5d457b985af598
